package com.sczmgk.track.utils;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

import com.sczmgk.track.constant.Constant;

public class CacheUtils {
	
	public static final String CACHE_FILE_NAME = "lezheng_cache";
	private static SharedPreferences mSharedPreferences;
	private static String AREA_KEY = "areakey";

	/**
	 * alt + shift + J
	 * 
	 * 使用SharedPreferences存储boolean类型数据.
	 * @param context
	 * @param key 要存储的数据的key
	 * @param value 要存储的数据
	 */
	public static void cacheBooleanData(Context context, String key, boolean value) {
		if(mSharedPreferences == null) {
			mSharedPreferences = context.getSharedPreferences(CACHE_FILE_NAME, Context.MODE_PRIVATE);
		}
		Editor edit = mSharedPreferences.edit();
		edit.putBoolean(key, value);
		edit.commit();
	}
	
	/**
	 * 取出缓存的boolean类型数据
	 * @param context
	 * @param key 要取出的数据的key
	 * @param defValue 缺省值
	 * @return
	 */
	public static boolean getBooleanData(Context context, String key, boolean defValue) {
		if(mSharedPreferences == null) {
			mSharedPreferences = context.getSharedPreferences(CACHE_FILE_NAME, Context.MODE_PRIVATE);
		}
		return mSharedPreferences.getBoolean(key, defValue);
	}
	
	/**
	 * 缓存字符串数据
	 * @param context
	 * @param key
	 * @param value
	 */
	public static void cacheStringData(Context context, String key, String value) {
		if(mSharedPreferences == null) {
			mSharedPreferences = context.getSharedPreferences(CACHE_FILE_NAME, Context.MODE_PRIVATE);
		}

		mSharedPreferences.edit().putString(key, value).commit();
	}
	
	/**
	 * 根据key获取缓存的数据
	 * @param context
	 * @param key
	 * @param defValue
	 * @return
	 */
	public static String getStringData(Context context, String key, String defValue) {
		if(mSharedPreferences == null) {
			mSharedPreferences = context.getSharedPreferences(CACHE_FILE_NAME, Context.MODE_PRIVATE);
		}
		return mSharedPreferences.getString(key, defValue);
	}

	/**
	 * 根据key获取缓存的数据
	 * @param context
	 * @param key
	 * @param defValue
	 * @return
	 */
	public static int getIntData(Context context, String key, int defValue) {
		if(mSharedPreferences == null) {
			mSharedPreferences = context.getSharedPreferences(CACHE_FILE_NAME, Context.MODE_PRIVATE);
		}
		return mSharedPreferences.getInt(key,defValue);

	}


	/**
	 * 缓存int数据
	 * @param context
	 * @param key
	 * @param value
	 */
	public static void cacheIntData(Context context, String key, int value) {
		if(mSharedPreferences == null) {
			mSharedPreferences = context.getSharedPreferences(CACHE_FILE_NAME, Context.MODE_PRIVATE);
		}

		mSharedPreferences.edit().putInt(key, value).commit();
	}

//	/**
//	 * 获取缓存工号
//	 */
//	public static String getJobNum(Context context){
//		return getStringData(context,Constant.JOB_NUMBER,"");
//	}
//
//	/**
//	 * 设置缓存工号
//	 * @param context
//	 * @param jobNum
//	 */
//	public static void setJobNum(Context context ,String jobNum){
//		cacheStringData(context, Constant.JOB_NUMBER, jobNum);
//	}

	/**
	 * 缓存userID
	 * @param context
	 */
	public static void setLoginUserid(Context context, int userid) {
		cacheIntData(context, Constant.LOGIN_UID, userid);
	}

	/**
	 * 获取用户id
	 * @param context
	 * @return
	 */
	public static int  getLoginUserid(Context context){
		return  CacheUtils.getIntData(context, Constant.LOGIN_UID, -1);
	}

	/**
	 * 缓存登录状态
	 * @param context
	 * @param status
	 */
	public static void cacheLoginStatus(Context context,boolean status){
		cacheBooleanData(context,Constant.IS_LOGIN_KEY,status);
	}

	/**
	 * 取得是否登录
	 * @param context
	 * @return 返回 true表示已登录
	 */
	public static boolean getLoginStatus(Context context){
		return  getBooleanData(context,Constant.IS_LOGIN_KEY,false);

	}


	private static String REDORD_STATUS = "record_status";

	/**
	 * 取得是否正在记录轨迹的状态
	 * @param context
	 * @return
     */
	public static boolean getRecordStatus(Context context){
		return  getBooleanData(context,REDORD_STATUS,false);
	}

	public static void setREcordStatus(Context context,boolean recordStatus){
		cacheBooleanData(context,REDORD_STATUS,recordStatus);
	}

	/**
	 * 是否可以提交停止轨迹
	 */
	private static String ENABLE_STOP = "enable_stop";

	/**
	 * 获取是否可以提交停止记录(只有手动停止与计时器到时才可以停止)
	 * @param context
	 * @return
     */
	public static boolean getEnableStatus(Context context){
		return  getBooleanData(context,ENABLE_STOP,false);
	}


	/**
	 *
	 * @param context
	 * @param recordStatus
     */
	public static void setEnableStatus(Context context,boolean recordStatus){
		cacheBooleanData(context,ENABLE_STOP,recordStatus);
	}
	private static String RECORD_TYPE = "record_type";

	/**
	 * 设置记录类型(时长)
	 * @param context
	 * @param recordType   0: 手动关闭  4: 4小时    8: 8小时
     */
	public static void setRecordType(Context context,int recordType){
		cacheIntData(context,RECORD_TYPE,recordType);

	}

	/**
	 * 获取记录类型
	 * @param context
	 * @return  recordType   0: 手动关闭  4: 4小时    8: 8小时
     */
	public static int getRecordType(Context context){
		return CacheUtils.getIntData(context,RECORD_TYPE,0);
	}

}
